/**
 * Envía un correo electrónico de texto plano con una cotización adjunta.
 *
 * @param {string} nombreEmpresa El nombre de la empresa remitente (se usará en el cuerpo del mensaje).
 * @param {string} correoCliente El correo electrónico del destinatario.
 * @param {string} asunto El asunto del correo electrónico.
 * @param {string} mensaje El mensaje principal del correo.
 * @param {string} cotizacionPDF La ruta completa del archivo PDF de la cotización en Google Drive (ej. "Cotizaciones/mi_cotizacion.pdf").
 */
function enviarCotizacion(nombreEmpresa, correoCliente, asunto, mensaje, cotizacionPDF) { // Nombre de la función cambiado a enviarCotizacion
  // --- Procesamiento del archivo PDF para adjuntarlo ---
  var nombreArchivoPDF = obtenerNombreArchivo(cotizacionPDF);
  var pdfBlob = null; // Variable para almacenar el Blob del PDF

  try {
    // Busca el archivo PDF por su nombre en Google Drive
    var archivosPDF = DriveApp.getFilesByName(nombreArchivoPDF);
    if (archivosPDF.hasNext()) {
      var archivo = archivosPDF.next(); 
      Logger.log("Archivo PDF encontrado: " + archivo.getName());
      // Obtiene el contenido del archivo como un Blob (Binary Large Object)
      // Esto es necesario para adjuntar el archivo directamente.
      pdfBlob = archivo.getBlob();
      Logger.log("PDF obtenido como Blob: " + pdfBlob.getName());
    } else {
      Logger.log("Error: No se encontró el archivo PDF con el nombre: " + nombreArchivoPDF);
      // Si el PDF no se encuentra, lanza un error para detener la ejecución
      // y notificar que el archivo esencial no está disponible.
      throw new Error("Archivo PDF de cotización no encontrado en Google Drive.");
    }
  } catch (error) {
    Logger.log("Error al procesar el PDF para adjuntar: " + error.toString());
    // Vuelve a lanzar el error para que sea visible en los registros de Apps Script.
    throw error; 
  }

  // --- Formateo del Mensaje ---
  // Se asegura de que 'mensaje' sea siempre una cadena, incluso si es nulo o indefinido,
  // y luego los saltos de línea se respetan automáticamente en el correo de texto plano.
  var formattedMensaje = (mensaje || ''); 

  // --- Construcción del Cuerpo del Correo (Texto Plano) ---
  // Se crea un mensaje simple de texto plano, utilizando solo el parámetro 'mensaje'.
  var cuerpoCorreoTexto = `${formattedMensaje}`;

  // --- Opciones para el Envío del Correo ---
  // Se configura el archivo PDF como un adjunto.
  var opcionesEnvio = {
    attachments: pdfBlob ? [pdfBlob] : [] // Adjunta el PDF si se obtuvo correctamente
  };

  // --- Envío del Correo Electrónico ---
  try {
    // Envía el correo electrónico. El remitente será la cuenta de Google
    // que está ejecutando este script de Apps Script por defecto.
    GmailApp.sendEmail(correoCliente, asunto, cuerpoCorreoTexto, opcionesEnvio);
    Logger.log("Correo enviado correctamente a " + correoCliente + " con PDF adjunto.");
  } catch (error) {
    Logger.log("Error al enviar el correo: " + error.toString());
    // Vuelve a lanzar el error para que sea visible en los registros de Apps Script.
    throw error;
  }
}

/**
 * Función auxiliar: Obtiene solo el nombre del archivo de una ruta completa.
 * Ejemplo: "carpeta/subcarpeta/archivo.pdf" -> "archivo.pdf".
 *
 * @param {string} rutaCompleta La ruta completa del archivo.
 * @returns {string} El nombre del archivo.
 */
function obtenerNombreArchivo(rutaCompleta) {
  // Divide la ruta por el carácter '/' y toma el último elemento, que es el nombre del archivo.
  var partes = rutaCompleta.split('/');
  var nombreArchivo = partes[partes.length - 1]; 
  return nombreArchivo;
}